package com.ophiux.cs.infrastructure.mapper.consultBase;

import com.ophiux.cs.domain.consultBase.model.entity.Doctor;
import com.ophiux.cs.domain.consultBase.model.valueobj.CSDoctorsResult;
import com.ophiux.cs.domain.consultBase.model.valueobj.CSTypeResult;
import com.ophiux.cs.domain.consultBase.model.valueobj.DoctorQueryObj;
import com.ophiux.utils.exception.OphiuxDaoException;

import java.util.List;

/**
 * 医生数据层映射
 */
public interface DoctorMapper {
	/**
	 * 根据医生姓名查询医医生
	 * @param DOCTOR_NAME
	 * @return Doctor
	 */
	public Doctor findByName(String DOCTOR_NAME) throws OphiuxDaoException;
	/**
	 * 根据条件查询医医生
	 * @param doctor
	 * @return Doctor
	 */
	public List<Doctor> selectDoctor(Doctor doctor) throws OphiuxDaoException;

	/**
	 * 新增医生
	 * @param doctor
	 * @throws OphiuxDaoException
	 */
	public void addDoctor(Doctor doctor) throws OphiuxDaoException;

	/**
	 * 更新医生
	 * @param doctor
	 * @throws OphiuxDaoException
	 */
	public void updateDoctor(Doctor doctor) throws OphiuxDaoException;

	/**
	 * 删除医生
	 * @param DOCTOR_ID
	 * @throws OphiuxDaoException
	 */
	public void deleteDoctor(String DOCTOR_ID) throws OphiuxDaoException;

	/**
	 * 根据条件查询医医生
	 * @param doctor
	 * @return Doctor
	 */
	public List<CSDoctorsResult> getCSDoctors(DoctorQueryObj doctor) throws OphiuxDaoException;
	/**
	 * 根据条件查询医医生
	 * @param doctor
	 * @return Doctor
	 */
	public int getCSDoctorsCount(DoctorQueryObj doctor) throws OphiuxDaoException;
	/**
	 * 根据ID查询医医生
	 * @param DOCTOR_ID
	 * @return Doctor
	 */
	public Doctor getDoctorById(String DOCTOR_ID) throws OphiuxDaoException;
	/**
	 * 根据医生ID查询咨询方式
	 * @param DOCTOR_ID
	 * @return Doctor
	 */
	public List<CSTypeResult> getCSTypeByDoctorId(String DOCTOR_ID) throws OphiuxDaoException;

}
